package com.codewsq.java;

import org.junit.Test;

import java.util.Date;

/**
 * JDK 8之前日期和时间的API测试
 */
public class DateTimeTest {

    //1.System类中的currentTimeMillis()
    @Test
    public void test() {
        // 返回当前时间至1970年1月1日0时0分0秒之间的时间差，单位：毫秒
        // 一般称为时间戳
        long currentTimeMillis = System.currentTimeMillis();
        System.out.println(currentTimeMillis);
    }

    /*
    java.util.Date类
           |---java.sql.Date类

    1.两个构造器的使用
        >构造器一：Date()：创建一个对应当前时间的Date对象
        >构造器二：创建指定毫秒数的Date对象
    2.两个方法的使用
        >toString():显示当前的年、月、日、时、分、秒
        >getTime():获取当前Date对象对应的毫秒数。（时间戳）

    3. java.sql.Date对应着数据库中的日期类型的变量
        >如何实例化
        >如何将java.util.Date对象转换为java.sql.Date对象
     */
    @Test
    public void test1() {
        // 构造器一：Date()
        Date date = new Date();
        // 构造器二：返回指定毫秒数的Date对象
        Date date1 = new Date(System.currentTimeMillis());

        System.out.println("-----------------------常用方法------------------------");

        // 常用方法:
        // toString():
        String dateStr = date.toString();
        System.out.println(dateStr);
        // getTime(): 获取当前Date对象对应的毫秒数。（时间戳）
        long time = date.getTime();
        System.out.println(time);

        System.out.println("-----------------------java.sql.Date------------------------");
        // java.sql.Date继承于Java.util.Date类
        // 实例化java.sql.Date
        java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis());

        // 将java.util.Date对象转换为java.sql.Date对象
        // 方式一：使用java.sql.Date(long time) 构造器转换，参数为java.util.Date对象转为时间戳传入
        java.sql.Date sqlDate1 = new java.sql.Date(date1.getTime());
        // 方式二：使用多态的方式，因为util.Date是 sql.Date的父类
        Date date2 = new java.sql.Date(System.currentTimeMillis());
        java.sql.Date sqlDate2 = (java.sql.Date) date2;

    }
}
